#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;

class Student
{
    friend void sort(Student st[], int n); // 友元函数，对st按总评成绩进行从大到小排序
public:
    // 用参数name1, nor1, exp1, fin1分别初始化数据成员name，norm, ex, final
    void init(char* name1, int nor1, int ex1, int fin1); 
    void print() const; //输出该学生信息。
    void fun(); // 计算学生的总评成绩。
    // 计算方法为：总评成绩 = 平时成绩占 * 20 % +实验成绩占 * 25 % +期末成绩占 * 55 % 。
    // 总评成绩计算时要求四舍五入，并且期末考试成绩不足50分时，则期末考试成绩即为总评成绩。
    int getScore() const { return _overall; }
private:
    int _norm;
    int _ex;
    int _final;
    int _overall; // 分别表示学生的平时成绩、实验成绩、期末考试和总评成绩
    char _name[15];// 学生姓名
};

void Student::init(char* name, int nor, int ex, int fin)
{
    strcpy(_name, name);
    _norm = nor;
    _ex = ex;
    _final = fin;
}

void Student::fun()
{
    _overall = _final < 50 ? _final : (_norm * 20 + _ex * 25 + _final * 55 + 50) / 100;
}

void Student::print() const
{
    cout << _name << ' ' << _norm << ' ' << _ex << ' ' << _final << ' ' << _overall << endl;
}

void sort(Student st[], int n)
{
    for (int i = 0; i < n; i++)
    {
        bool NoSwap = true;
        for (int j = 0; j < n - i - 1; j++)
        {
            if (st[j].getScore() < st[j + 1].getScore())
            {
                swap(st[j], st[j + 1]);
                NoSwap = false;
            }
        }
        if (NoSwap) return;
    }
}

// 要求使用以下main函数测试：
int main() 
{
    int n, i;
    int norm, ex, final;
    char name[15];

    cin >> n;

    Student* stu = new Student[n];
    for (i = 0; i < n; i++) 
    {
        cin >> name >> norm >> ex >> final;
        stu[i].init(name, norm, ex, final);
        stu[i].fun();
    }

    sort(stu, 5);
    for (i = 0; i < n; i++) 
    {
        stu[i].print();
    }

    delete[] stu;
    return 0;
}
